home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / pascal / tjoop11.zip / ELEMENTS.PAS < prev    next >
Pascal/Delphi Source File  |  1991-05-20  |  10KB  |  369 lines

  1. UNIT Elements ;
  2.  
  3.  
  4.  
  5.  
  6.  
  7. {**********************************************************************
  8.  *                                                                    *
  9.  *  PROGRAM :  Elements                PC FILE NAME :  Elements.PAS   *
  10.  *  ----------------------------------------------------------------  *
  11.  *  LIBRARY MODULES USED :  DOS CRT                                   *
  12.  *  BaseType :  TP6.0 TPU SOURCE: BASETYPE.PAS  BINARY:  BASETYPE.TPU *
  13.  *  ----------------------------------------------------------------  *
  14.  *  PURPOSE :  The purpose of this UNIT is to provide a set of        *
  15.  *             object elements for various data structures.           *
  16.  *  ----------------------------------------------------------------  *
  17.  *  AUTHOR   :  Thomas E. Jenkins, Jr.                                *
  18.  *              PROGRAMMER, UNIVERSITY OF SOUTH CAROLINA, USA         *
  19.  *  BITNET   :  C0361@UNIVSCVM.BITNET                                 *
  20.  *  INTERNET :  C0361@univscvm.csd.scarolina.EDU                      *
  21.  *              tomj@csdserver3.csd.scarolina.EDU                     *
  22.  *  ----------------------------------------------------------------  *
  23.  *  DISCAIMER :  This program has been tested to the best of my       *
  24.  *               abilities.  The author claims no responsibility      *
  25.  *               for the performance or side effects this program     *
  26.  *               may yield.                                           *
  27.  *  ----------------------------------------------------------------  *
  28.  *  DISTIBUTION :  This program is given freely to the PD realms.     *
  29.  *                 It may freely be copied and distributed.  Any      *
  30.  *                 one wishing to use some or whole parts of this     *
  31.  *                 program for commercial use please contact the      *
  32.  *                 author first.                                      *
  33.  *                                                                    *
  34.  **********************************************************************}
  35.  
  36.  
  37.  
  38.  
  39.                                  INTERFACE
  40.  
  41.  
  42.  
  43.  
  44.  
  45. USES
  46.        BaseTypes;
  47.  
  48.  
  49.  
  50.  
  51. CONST
  52.        STR_OBJ                         = 00001 ;
  53.        INT_OBJ                         = 00002 ;
  54.        REAL_OBJ                        = 00003 ;
  55.  
  56.  
  57.  
  58.  
  59.  
  60. TYPE
  61.  
  62.  
  63.  
  64.              {
  65.  
  66.  
  67.                  Here is a basic view of the Element object tree:
  68.  
  69.                  TObject                    [ to allow use with streams   ]
  70.                     |
  71.                     |
  72.                     \___ TBaseOBJ           [ basic functions of stack &  ]
  73.                              |              [ elements                    ]
  74.                              |
  75.                              \___ TElementOBJ    [ basic functionality of ]
  76.                                        |         [ any element            ]
  77.                                        |
  78.                                        \___ TStrOBJ [ string specific     ]
  79.                                        /            [ functions & storage ]
  80.                                        |
  81.                                        |
  82.                                        \___ TIntOBJ [ integer specific    ]
  83.                                        /            [ functions & storage ]
  84.                                        |
  85.                                        |
  86.                                        \___ TRealOBJ [ real specific       ]
  87.                                                      [ functions & storage ]
  88.  
  89.              }
  90.  
  91.  
  92.  
  93.  
  94.        PString                         = ^STRING ;
  95.        PINTEGER                        = ^INTEGER ;
  96.        PREAL                           = ^REAL ;
  97.  
  98.        PStrOBJ                         = ^TStrOBJ ;
  99.        TStrOBJ                         = OBJECT ( TElementOBJ )
  100.  
  101.          data                          : PString ;
  102.  
  103.          CONSTRUCTOR Init (     s      : STRING ) ;
  104.  
  105.          FUNCTION    TheType           : WORD ;
  106.            VIRTUAL ;
  107.  
  108.          FUNCTION    GetData           : POINTER ;
  109.            VIRTUAL ;
  110.  
  111.          PROCEDURE   SetData (     s   : POINTER ) ;
  112.            VIRTUAL ;
  113.  
  114.          PROCEDURE   Display ;
  115.            VIRTUAL ;
  116.  
  117.          DESTRUCTOR  Done ;
  118.            VIRTUAL ;
  119.  
  120.          END ;  {  TStrOBJ  }
  121.  
  122.        PIntOBJ                         = ^TIntOBJ ;
  123.        TIntOBJ                         = OBJECT ( TElementOBJ )
  124.  
  125.          data                          : INTEGER ;
  126.  
  127.          CONSTRUCTOR Init (     i      : INTEGER ) ;
  128.  
  129.          FUNCTION    TheType           : WORD ;
  130.            VIRTUAL ;
  131.  
  132.          FUNCTION    GetData           : POINTER ;
  133.            VIRTUAL ;
  134.  
  135.          PROCEDURE   SetData (     i   : POINTER ) ;
  136.            VIRTUAL ;
  137.  
  138.          PROCEDURE   Display ;
  139.            VIRTUAL ;
  140.  
  141.          DESTRUCTOR  Done ;
  142.            VIRTUAL ;
  143.  
  144.          END ;  {  TIntOBJ  }
  145.  
  146.        PRealOBJ                        = ^TRealOBJ ;
  147.        TRealOBJ                        = OBJECT ( TElementOBJ )
  148.  
  149.          data                          : REAL ;
  150.  
  151.          CONSTRUCTOR Init (     r      : REAL ) ;
  152.  
  153.          FUNCTION    TheType           : WORD ;
  154.            VIRTUAL ;
  155.  
  156.          FUNCTION    GetData           : POINTER ;
  157.            VIRTUAL ;
  158.  
  159.          PROCEDURE   SetData (     r   : POINTER ) ;
  160.            VIRTUAL ;
  161.  
  162.          PROCEDURE   Display ;
  163.            VIRTUAL ;
  164.  
  165.          DESTRUCTOR  Done ;
  166.            VIRTUAL ;
  167.  
  168.          END ;  {  TIntOBJ  }
  169.  
  170.  
  171.  
  172.  
  173.  
  174.                                IMPLEMENTATION
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181. {===========================================================================}
  182. {==                      M  E  T  H  O  D  S                              ==}
  183. {===========================================================================}
  184.  
  185.           {------------------------------------------------}
  186.           {--        C O N S T R U C T O R S             --}
  187.           {------------------------------------------------}
  188.  
  189.  CONSTRUCTOR TStrOBJ.Init (    s       : STRING ) ;
  190.  
  191.   VAR
  192.        sLength                         : BYTE ABSOLUTE s ;
  193.                             {  Length always available.  No  }
  194.                             {  function call needed this way }
  195.  
  196.    BEGIN  {  TStrOBJ.Init  }
  197.  
  198.      TElementOBJ.Init ;
  199.  
  200.      GetMem ( data , Length ( s ) + 1 ) ;     {  Assign data to new node   }
  201.  
  202.      END ;  {  TStrOBJ.Init  }
  203.  
  204.  CONSTRUCTOR TIntOBJ.Init (    i       : INTEGER ) ;
  205.  
  206.    BEGIN  {  TIntOBJ.Init  }
  207.  
  208.      TElementOBJ.Init ;
  209.  
  210.      data := i ;
  211.  
  212.      END ;  {  TIntOBJ.Init  }
  213.  
  214.  CONSTRUCTOR TRealOBJ.Init (    r      : REAL ) ;
  215.  
  216.    BEGIN  {  TRealOBJ.Init  }
  217.  
  218.      TElementOBJ.Init ;
  219.  
  220.      data := r ;
  221.  
  222.      END ;  {  TRealOBJ.Init  }
  223.  
  224.  
  225.           {------------------------------------------------}
  226.           {--          D E S T R U C T O R S             --}
  227.           {------------------------------------------------}
  228.  
  229.  
  230.  
  231.  DESTRUCTOR  TStrOBJ.Done ;
  232.  
  233.    BEGIN  {  TStrOBJ.Done  }
  234.  
  235.      FreeMem ( data , Length ( data^ ) + 1 ) ;        {  Release reservered memory  }
  236.  
  237.      END ;  {  TStrOBJ.Done  }
  238.  
  239.  DESTRUCTOR  TIntOBJ.Done ;
  240.  
  241.    BEGIN  {  TIntOBJ.Done  }
  242.      END ;  {  TIntOBJ.Done  }
  243.  
  244.  DESTRUCTOR  TRealOBJ.Done ;
  245.  
  246.    BEGIN  {  TRealOBJ.Done  }
  247.      END ;  {  TRealOBJ.Done  }
  248.  
  249.  
  250.  
  251.           {------------------------------------------------}
  252.           {--              M E T H O D S                 --}
  253.           {------------------------------------------------}
  254.  
  255.  
  256.  FUNCTION    TStrOBJ.GetData           : POINTER ;
  257.  
  258.    BEGIN  {  TStrOBJ.GetData  }
  259.  
  260.      GetData := data ;
  261.  
  262.      END ;  {  TStrOBJ.GetData  }
  263.  
  264.  FUNCTION    TStrOBJ.TheType           : WORD ;
  265.  
  266.    BEGIN  {  TStrOBJ.TheType  }
  267.  
  268.      TheType := STR_OBJ ;
  269.  
  270.      END ;  {  TStrOBJ.TheType  }
  271.  
  272.  PROCEDURE   TStrOBJ.SetData (     s   : POINTER ) ;
  273.  
  274.    BEGIN  {  TStrOBJ.SetData  }
  275.  
  276.      FreeMem ( data , Length ( data^ ) + 1 ) ;
  277.  
  278.      GetMem ( data , Length ( PString ( s )^ ) + 1 ) ;
  279.  
  280.      data^ := PString ( s )^ ;
  281.  
  282.      END ;  {  TStrOBJ.SetData  }
  283.  
  284.  PROCEDURE   TStrOBJ.Display ;
  285.  
  286.    BEGIN  {  T